home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mission 3
/
Mission 3.zip
/
Mission 3.iso
/
texte
/
jane152
/
scl
/
rot13.scl
< prev
next >
Wrap
Text File
|
1998-10-29
|
2KB
|
66 lines
# Verschlüsselt die Zeichenkette 's' durch Rotation um 13
# Buchstaben. Liefert den verschlüsselten Text zurück.
rot13(s)
begin
set len to @s; # Länge von 's'
set i to 0;
while ( i < len )
begin
set c to s[i]; # Betrachte 'i'-tes Zeichen
if ( c >= 65 && c <= 90 ) # Großbuchstabe?
begin
set c to c - 65; # Falls ja, verschieben
set c to (c + 13) % 26;
set c to c + 65;
end
else
begin
if ( c >= 97 && c <= 122 ) # Kleinbuchstabe?
begin
set c to c - 97; # Falls ja, verschieben
set c to (c + 13) % 26;
set c to c + 97;
end
end # Sonst in Ruhe lassen
set s[i] to c; # Verschobenes Zeichen einsetzen
set i to i + 1; # nächstes Zeichen
end
return s; # Den verschlüsselten Text zurückgeben
end
# Testet das Unterprogramm 'rot13'
rot13test()
begin
while ( 1 ) # Ewige Schleife
begin
lprint('String, bitte');
set s to inputline();
if ( s == '#' ) # Abbruch, wenn '#' eingegeben
break;
set t to rot13(s); # Verschlüsseln
lprint(t); # und ausgeben
set t to rot13(t); # Wieder entschlüsseln
lprint(t); # und ausgeben
end
end
# Wendet 'rot13' auf einen selektierten
# Block im obersten Fenster an.
rot13block()
begin
tempcut(-1, 0); # Befördert den selektierten Block in
# den ersten temporären Puffer
set l to buflines(-1);
# Bearbeite alle Zeilen des Puffers
set i to 0;
while ( i < l )
begin
set s to rot13(bufgetline(-1, i));
# Verschlüssele jede Zeile
bufputline(-1, i, s);
set i to i + 1; # Weiter bei der nächsten Zeile
end
temppaste(-1, 0); # Füge verschlüsselten Text wieder ein
end